home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 145
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin
/
games
/
spassion
/
source.lzh
/
SOURCE
/
PLAYER.H
< prev
next >
Wrap
Text File
|
2000-03-21
|
4KB
|
115 lines
#define PLAYER1 0
#define PLAYER2 1
#ifndef PLAYER_X
#define PLAYER_X (*((short *) (&player->lx))) /*lxの上位ワード*/
#define PLAYER_Y (*((short *) (&player->ly))) /*lyの上位ワード*/
#define CENTER_X 5
#endif
#define PLAYER_MIN_X (16) /* X 座標最小値 */
#define PLAYER_MAX_X (16+255-12)
#define PLAYER_MIN_Y (16+4) /* Y 座標最小値 */
#define PLAYER_MAX_Y (16+255-4)
/* 当たり判定の範囲 */
#define PLAYER_HIT_X 6
#define PLAYER_HIT_Y 3
#define OPTION_HIT_X 7
#define OPTION_HIT_Y 5
#define CENTER_X 5
/*プレイヤーの状態*/
enum {
PLAYER_ALIVE = 0, /* プレイヤーは生きている */
PLAYER_APPEAR, /* 登場中(画面左から出てくる・操作不能) */
PLAYER_MUTEKI, /* 無敵(登場直後) */
PLAYER_BARRIER, /* バリアで無敵 */
PLAYER_DEAD, /* 死んでいる */
PLAYER_LAST, /* オールクリア */
PLAYER_WAIT /* 出番待ち */
};
enum {
GAME_PLAY = 0, /* ゲーム中 */
GAME_OVER, /* 死んでゲームオーバー */
GAME_COMPLETE, /* オールクリア */
};
/*オプションの種類*/
enum {DEF=0,ATT,MUTEKI};
/* 溜めているときのアニメーション */
typedef struct CHARGE_SP{
short x, y; /* 座標 */
short pt; /* スプライトパターンNo. */
short info; /* 反転コード・色・優先度を表わすデータ */
short anim_count; /* アニメーションカウント */
}CHARGE_SP;
/* オプション */
typedef struct OPTION{
signed short x, y; /* 座標 */
short pt; /* スプライトパターンNo. */
short info; /* 反転コード・色・優先度を表わすデータ */
signed int lx, ly; /* 32bit X,Y 座標 ( l = longword ) */
signed int vx, vy; /* 速度 */
short rx, ry; /* 当たり判定の範囲 */
short type; /* オプションの種類 */
short charge; /* エネルギーチャージ数 */
short shot_count; /* 連射カウンタ ( 0 だと撃てる ) */
short anim_count; /* アニメーションカウント */
CHARGE_SP charge_sp; /* 溜めてるときのアニメーション用 */
}OPTION;
typedef struct PLAYER{
signed short x, y; /* 座標 */
short pt; /* スプライトパターンNo. */
short info; /* 反転コード・色・優先度を表わすデータ */
signed int lx, ly; /* 32bit X,Y 座標 ( l = longword ) */
signed int vx, vy; /* 速度 */
short hit_x, hit_y; /* 当たり判定の範囲 */
int old_lx[256], old_ly[256]; /* 前回の32bit X,Y 座標 ( l = longword ) */
short gx, gy; /* 目標値 */
short num; /* プレイヤーの番号 */
short left; /* 残機数 */
short state; /* プレイヤーの状態 */
short pow_lev; /* パワーアップレベル */
short shot_type; /* ショットの種類 */
short charge; /* エネルギーチャージ数 */
short dir; /* 自機の向いている方向 */
short dead_count; /* 死ぬときのカウンタ ( 0 だと生きている ) */
short muteki_count; /* 復活後の無敵カウンタ ( 0 だと通常 ) */
short flash_count; /* 無敵時のパレットフラッシュ用カウンター */
short laser[2]; /* レーザーは出てるか(0だと出てない) */
short shot_count; /* 連射カウンタ ( 0 だと撃てる ) */
short a_button_flag; /* A ボタンフラグ */
short b_button_flag; /* B ボタンフラグ */
char old_joy; /* 前のジョイスティック状態 */
char button_swap; /* ボタンを入れ換えてるか */
short pointer; /* old_lx,old_lyの要素(オプション用) */
short score; /* 点数 */
OPTION option[10]; /* オプション */
short option_type; /* オプションの種類 */
short option_charge; /* エネルギーチャージ数 */
short option_anim_count; /* アニメーションカウント */
CHARGE_SP charge_sp; /* 溜めてるときのアニメーション用 */
}PLAYER;
#ifdef GLOBAL_DEFINE /* グローバル変数の定義と宣言を1つにまとめるテク */
#define Extern /* Extern をヌル文字列に置換 */
#else
#define Extern extern /* Extern を extern に置換 */
#endif
/* グローバル変数 */
Extern PLAYER player[2];
Extern PLAYER left[2];
Extern short game_over_state;
void InitPlayer( PLAYER * );
void MovePlayer( PLAYER * );